A type or data structure that serves as the underlying structure for another type and is only accessed by the implementer.